package com.gitee.qdbp.general.system.api.permission.service;

import java.util.List;
import com.gitee.qdbp.able.exception.ServiceException;
import com.gitee.qdbp.able.jdbc.ordering.OrderPaging;
import com.gitee.qdbp.able.jdbc.paging.PageList;
import com.gitee.qdbp.base.system.model.IAccountType;
import com.gitee.qdbp.general.system.api.permission.model.ResourceCoreBean;
import com.gitee.qdbp.general.system.api.permission.model.ResourceCoreWhere;

/**
 * 资源信息业务接口
 *
 * @author zhh
 * @version 170214
 */
public interface IResourceCoreQueryer {

    ResourceCoreBean find(String id) throws ServiceException;

    ResourceCoreBean find(ResourceCoreWhere where) throws ServiceException;

    PageList<ResourceCoreBean> list(ResourceCoreWhere where, OrderPaging paging) throws ServiceException;

    /**
     * 按用户查询该用户的权限资源<br>
     * parents=是否需要查询所有父级权限资源(role_resource_ref表记录的只有OPERATE这一级, 没有记模块/菜单组/菜单)
     * 
     * @param userId 用户ID
     * @param parents 是否需要查询所有父级权限资源
     * @return 权限资源列表
     * @throws ServiceException 查询失败
     */
    List<ResourceCoreBean> listByUserId(String userId, ResourceCoreWhere where, OrderPaging paging, boolean parents)
            throws ServiceException;

    /**
     * 查询指定用户类型的默认角色的权限资源
     * 
     * @param scene 使用场景
     * @param userType 用户类型
     * @param parents 是否需要查询所有父级权限资源
     * @return 权限资源列表
     * @throws ServiceException
     */
    List<ResourceCoreBean> listByUserType(IAccountType userType, String scene, boolean parents) throws ServiceException;

}
